package demo5;


public class Single {
    //类加载的时候，就就创建好的唯一一份示例
    private static Single single = new Single();
    //限制只能通过getSingle这个方法拿到实例
    public static Single getSingle() {
        return single;
    }
    //防止通过new的方式来创建实例化对象
    private Single() {}
}
//懒汉模式
class SingleLazy {
    //刚开始并不初始化实例，减少程序刚开始运行时的系统开销
    private static volatile SingleLazy singleLazy = null;
    //获取实例
    public static SingleLazy getSingleLazy() {
        if(singleLazy == null) {//为了判断是否加锁
            synchronized(SingleLazy.class) {
                if(singleLazy == null) {//为了判断是否创建实例
                    //创建实例
                    singleLazy = new SingleLazy();
                }
            }
        }
        return singleLazy;
    }
}
